#pragma once

#define HWFSNP_DEBUG_CALL     0x1
#define HWFSNP_DEBUG_ERROR    0x2
#define HWFSNP_DEBUG_INFO     0x4

extern DWORD g_HwFsNpDebugLevel;

#define TRACE_CALL(Args)    \
            if (g_HwFsNpDebugLevel & HWFSNP_DEBUG_CALL) {    \
                DbgPrint##Args;                 \
            }

#define TRACE_ERROR(Args)    \
            if (g_HwFsNpDebugLevel & HWFSNP_DEBUG_ERROR) {    \
                DbgPrint##Args;                 \
            }

#define TRACE_INFO(Args)    \
            if (g_HwFsNpDebugLevel & HWFSNP_DEBUG_INFO) {    \
                DbgPrint##Args;                 \
            }

#ifdef HWFS_DBG
#define DBG_PRINT(_x_) WideDbgPrint _x_
#else
#define DBG_PRINT(_x_)
#endif

ULONG _cdecl WideDbgPrint(__in PWSTR Format, ...);

#define TRACE_TAG   L"HWFSNP:    "
